<?php

/**
 * Redis限制
 * $cof [host]地址 [port]端口 [password]密码 [ask]访问频率 [interval]周期 [msg]提示 $key：条件
 */
function RedisLimit($cof = [], $key)
{
  // 默认配置
  if (empty($cof)) {
    $cof = [
      'host' => "127.0.0.1",
      'port' => "3314",
      'password' => "",
      'ask' => 60,
      'interval' => 60,
      'msg' => "频繁访问,请稍后再试！"
    ];
  }

  //实例化一个Redis
  $redis = new Redis();
  //Redis 连接
  $redis->connect($cof['host'], $cof['port']);
  $redis->auth($cof['password']); //密码验证

  //限制次数访问次数
  $limit =  $cof['ask'];
  //获取一个key
  $check = $redis->exists($key);
  //判断key是否存在
  if ($check) {
    //将key中储存的数字值增一。如果key不存在，以0为key的初始值
    $redis->incr($key);
    //返回key所关联的字符串值。如果key不存在，返回nil。
    $count = $redis->get($key);
    //判断周期内的执行次数
    if ($count > $limit) {
      exit($cof['msg']);
    }
  } else {
    //将key中储存的数字值增一。如果key不存在，以0为key的初始值
    $redis->incr($key);
    //设置生命周期为x秒
    $redis->expire($key, $cof['interval']);
  }
  //返回key所关联的字符串值。如果key不存在，返回nil。
  $count = $redis->get($key);
  // 
  return $count;
}
